/**
 * @User: vitobo
 * @Date: 2024-02-28
 * @Description:  数据类型和 变量学习
 */

// 存在即合理
public class Test1 {

    public static void main(String[] args) {
        // 字符串类型
        // C语言没有字符串类型
        // java当中的字符串不是以\0结尾的
        String s = "xianan";
        System.out.println(s);

        int a = 10;
        int b = 20;
        // 字符串和整数在一起,使用+, 就是一个拼接的意思
        System.out.println("a: " + a + " b: " + b);

        // 把整数变成字符串
        System.out.println(s+a);

        String ret = String.valueOf(20);
        System.out.println(ret);

        // 把字符串变成整数
        String str = "1234";
        int ii = Integer.valueOf(str);
        System.out.println(ii);
    }


    public static void main3(String[] args) {
        // 类型提升
        // 运算时,小字节会提升为大字节
//        int a = 10;
//        long b = 20;
//        int c = (int)(a+b);
//        long d = a+b;

        byte a = 10;
        byte b = 20;
        // 当参与运算的两个数据, 小于4个字节的时候,会进行提升为4个字节
        // 所有的强转都是有风险的
        //byte c = (byte)(a+b);
        int c = a+b;
        System.out.println(c);

    }


    public static void main2(String[] args) {
        // 类型转换
        // 不相干的类型,不能互相转换
        int a = 10;
        long b = 100L;

        // a = b 不能进行直接赋值
        a = (int)b; // 强制类型转换,显式类型转换
        b = a;  // 隐式类型转换

    }
    public static void main1(String[] args) {

        // 字面常量
        System.out.println("hello");
        System.out.println(10);
        System.out.println(12.34);
        System.out.print("xian");

        // 变量, 定义出来的量
        // 局部变量
        int a = 10;  // a占四个字节
        // Integer Int类型的包装类
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);

        // Java当中,定义的局部变量必须初始化, 如果定义的变量没有初始化,程序会报错
        // Java当中没有全局变量的术语
        //int b;
        //System.out.println(b);

        // 当初始化变量赋值大于这个变量能够保存的最大值的时候程序会编译报错

        long b = 10;
        System.out.println(b);
        System.out.println(Long.MAX_VALUE);
        System.out.println(Long.MIN_VALUE);

        long c = 10L;   // 长整形  8个字节
        System.out.println(c);

        // 3. 短整型  2个字节
        short sh = 10;
        System.out.println(Short.MAX_VALUE);

        // 4. 字节类型 1个字节 8位
        byte by = 10;
        System.out.println(by);

        // 5. 双精度浮点型 8个字节
        double dd = 12.34;
        System.out.println(dd);
        System.out.println(Double.MAX_VALUE);
        System.out.println(Double.MIN_VALUE);

        // 6. 单精度浮点型 4个字节   浮点数是一个近似值,精度,小数点后6位
        float f = 12.5f;
        System.out.println(f);

        // 7. 字符类型 2个字节 16个比特位, 没有负数
        // Java使用的是 Unicode字符集
        char ch = 'a';
        System.out.println(ch);

        // 8. 布尔型
        // c语言中, 0是假的, 非0是真的
        // Java中, 真为true, 假为false
        boolean bb = true;
        System.out.println(bb);

    }


}
